package com.xxr.mom.ci.charging.interworking.base;

import com.alibaba.fastjson.JSONObject;
import com.xxr.mom.ci.charging.interworking.dto.InterworkingConfigDto;

/**
 * 我放请求对方接口
 * @description: AbstractAccepterService
 * @date: 2024/8/24 0:00
 * @author: natsuki_kining
 * @version: 1.0
 */
public interface InterfaceSender<R, P> extends InterworkingInterface<R, P> {

    /**
     * 我方请求对方接口
     *
     * @param r         请求参数
     * @param configDto 互联互通配置
     * @return 对方返回数据
     */
    P send(R r, InterworkingConfigDto configDto);

    /**
     * 我方请求对方接口
     *
     * @param jsonObject jsonObject请求参数
     * @param configDto  互联互通配置
     * @return 对方返回数据
     */
    default P send(JSONObject jsonObject, InterworkingConfigDto configDto) {
        R r = jsonObjectToRequestParam(jsonObject);
        return send(r, configDto);
    }

    /**
     * jsonObject 转换为请求参数具体类型
     *
     * @param jsonObject JSONObject
     * @return 泛型R
     */
    R jsonObjectToRequestParam(JSONObject jsonObject);

    /**
     * 请求对方接口的token
     *
     * @param configDto 互联互通配置
     * @return 对方返回的token
     */
    String getSenderAccessToken(InterworkingConfigDto configDto);

}
